Recent advances in computer performance have enabled graphic systems to provide more realistic graphical images using personal computers, home video game computers, handheld devices, and the like. In such graphic systems, a number of procedures are executed to “render” or draw graphic primitives to the screen of the system. A “graphic primitive” is a basic component of a graphic picture, such as a vertex, polygon, or the like. Rendered images are formed with combinations of these graphic primitives. Many procedures may be utilized to perform 3-D graphics rendering.
Specialized graphics processing units (e.g., GPUs, etc.) have been developed to optimize the computations required in executing the graphics rendering procedures. The GPUs are configured for high-speed operation and typically incorporate one or more rendering pipelines. Each pipeline includes a number of hardware-based functional units that are optimized for high-speed execution of graphics instructions/data, where the instructions/data are fed into the front end of the pipeline and the computed results emerge at the back end of the pipeline. The hardware-based functional units, cache memories, firmware, and the like, of the GPU is optimized to operate on the low-level graphics primitives (e.g., comprising “points”, “lines”, “triangles”, etc.) and produce real-time rendered 3-D images.
One important factor in determining the overall quality of rendered 3-D image is the quality of anti-aliasing processing performed along edges of objects. Anti-aliasing is used to reduce rasterization artifacts across contrasting edges. For example, in a case where one object is rendered in white against a black background, anti-aliasing processing must be performed in order to prevent stair stepping, shimmering, and other types of aliasing interference problems.
A problem exists, however, in that typical prior art anti-aliasing techniques produce a number of unwanted side effects in certain situations. Such situations include, for example, instances where polygons are immediately adjacent to one another and share an edge, where multiple line segments are used to create long curving lines, and where bounding boxes need to be moved across an image in real-time, and the like. In each of these examples, the foreground objects need to be anti-aliased against a background in order to preserve image quality. To preserve real-time 3-D rendering performance, prior art graphics processor units utilize a number of shortcuts and/or less than favorable compromises to handle such problematic situations. These shortcuts and compromises negatively impact the quality of the rendered scene and/or reduce the real-time rendering performance of the GPU's.